package com.lula.cursilho.view;

import java.io.Serializable;
import java.util.List;

import javax.faces.application.FacesMessage;
import javax.faces.context.FacesContext;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Scope;
import org.springframework.stereotype.Component;

import com.lula.cursilho.domain.Cursilho;
import com.lula.cursilho.exceptions.CursilhoException;
import com.lula.cursilho.service.CursilhoService;

@Component("manterCursilhoMB")
@Scope("request")
public class ManterCursilhoMB implements Serializable{

	private static final long serialVersionUID = 554878744L;
	
	private CursilhoService cursilhoService;
	
	private Cursilho cursilho;
	
	@Autowired
	public ManterCursilhoMB(CursilhoService cursilhoService){
		this.cursilhoService = cursilhoService;
	}
	
	public void gravarCursilho(){
		try {
			cursilhoService.gravarCursilho(cursilho);
			FacesMessage facesMessage = new FacesMessage(FacesMessage.SEVERITY_INFO, "Info", "Cursilho foi criado");
			FacesContext.getCurrentInstance().addMessage(null, facesMessage);
		} catch (CursilhoException e) {
			FacesMessage facesMessage = new FacesMessage(FacesMessage.SEVERITY_ERROR, "Erro", e.getMessage());
			FacesContext.getCurrentInstance().addMessage(null, facesMessage);
		}
	}
	
	public void removerCursilho(){
		try {
			cursilhoService.removerCursilho(cursilho);
			FacesMessage facesMessage = new FacesMessage(FacesMessage.SEVERITY_INFO, "Info", "Cursilho foi criado");
			FacesContext.getCurrentInstance().addMessage(null, facesMessage);
		} catch (CursilhoException e) {
			FacesMessage facesMessage = new FacesMessage(FacesMessage.SEVERITY_ERROR, "Erro", e.getMessage());
			FacesContext.getCurrentInstance().addMessage(null, facesMessage);
		}
	}
	
	public List<Cursilho> pesquisarTodos(){
		return cursilhoService.pesquisarTodos();
	}
	
	public List<Cursilho> pesquisarPorNome(){
		return cursilhoService.pesquisarPorNome(cursilho.getNome());
	}

	public Cursilho getCursilho() {
		return cursilho;
	}

	public void setCursilho(Cursilho cursilho) {
		this.cursilho = cursilho;
	}
	
	
}
